Make sure that we actually return menus for nodes of type menu, not the
authorMatthias Clasen <maclas@gmx.de>
Sun, 9 May 2004 04:03:59 +0000 (04:03 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sun, 9 May 2004 04:03:59 +0000 (04:03 +0000)
Sun May  9 00:03:03 2004  Matthias Clasen  <maclas@gmx.de>

* gtk/gtkuimanager.c (gtk_ui_manager_get_widget): Make sure
that we actually return menus for nodes of type menu, not the
menuitems they're attached to.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkuimanager.c

index 6a64986134df1a8ddc5df74d0e596259998a8094..48b78e78e24d05d29804e380feb1db2111117a77 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sun May  9 00:03:03 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkuimanager.c (gtk_ui_manager_get_widget): Make sure
+       that we actually return menus for nodes of type menu, not the
+       menuitems they're attached to.
+
 Sat May  8 22:50:55 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkactiongroup.c (gtk_action_group_set_translation_domain): 
index 6a64986134df1a8ddc5df74d0e596259998a8094..48b78e78e24d05d29804e380feb1db2111117a77 100644 (file)
@@ -1,3 +1,9 @@
+Sun May  9 00:03:03 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkuimanager.c (gtk_ui_manager_get_widget): Make sure
+       that we actually return menus for nodes of type menu, not the
+       menuitems they're attached to.
+
 Sat May  8 22:50:55 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkactiongroup.c (gtk_action_group_set_translation_domain): 
index 6a64986134df1a8ddc5df74d0e596259998a8094..48b78e78e24d05d29804e380feb1db2111117a77 100644 (file)
@@ -1,3 +1,9 @@
+Sun May  9 00:03:03 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkuimanager.c (gtk_ui_manager_get_widget): Make sure
+       that we actually return menus for nodes of type menu, not the
+       menuitems they're attached to.
+
 Sat May  8 22:50:55 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkactiongroup.c (gtk_action_group_set_translation_domain): 
index 6a64986134df1a8ddc5df74d0e596259998a8094..48b78e78e24d05d29804e380feb1db2111117a77 100644 (file)
@@ -1,3 +1,9 @@
+Sun May  9 00:03:03 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkuimanager.c (gtk_ui_manager_get_widget): Make sure
+       that we actually return menus for nodes of type menu, not the
+       menuitems they're attached to.
+
 Sat May  8 22:50:55 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkactiongroup.c (gtk_action_group_set_translation_domain): 
index 97539982928c3acf24659cec1d5b996842d8c363..cfbfe4b217e2c5dad96b67f0eb9f9aacc8538901 100644 (file)
@@ -708,12 +708,21 @@ gtk_ui_manager_get_widget (GtkUIManager *self,
    * widget */
   gtk_ui_manager_ensure_update (self);
 
+  if (strncmp ("/ui", path, 3) == 0)
+    path += 3;
   node = get_node (self, path, NODE_TYPE_UNDECIDED, FALSE);
 
   if (node == NULL)
     return NULL;
 
-  return NODE_INFO (node)->proxy;
+  if (NODE_INFO (node)->type == NODE_TYPE_MENU)
+    {
+      GtkWidget *proxy = NODE_INFO (node)->proxy;
+
+      return gtk_menu_item_get_submenu (GTK_MENU_ITEM (proxy));
+    }
+  else
+    return NODE_INFO (node)->proxy;
 }
 
 static void
@@ -928,7 +937,7 @@ get_node (GtkUIManager *self,
                             create, FALSE);
       if (!node)
        return NULL;
-      
+
       pos += length + 1; /* move past the node name and the slash too */
       parent = node;
     }